#!/bin/bash

# 检查是否提供了端口号
if [ -z "$1" ]; then
  echo "请提供一个端口号作为参数。"
  echo "用法: $0 <端口号>"
  exit 1
fi

# 获取当前时间戳，格式化为年月日时分秒
TIMESTAMP=$(date +"%Y-%m-%d.%H-%M-%S")


# 获取传入的端口号
PORT=$1
# 检查参数是否不等于8080和8081
if [ "$PORT" != "8081" ] && [ "$PORT" != "8088" ]; then
  echo "端口号应该为 8081 或 8088"
  exit 1
fi

# 定义文件路径
DOCKERFILE="Dockerfile"
DOCKER_COMPOSE_FILE="docker-compose-server.yml"

# 检查 Dockerfile 是否存在
if [ ! -f "$DOCKERFILE" ]; then
  echo "Dockerfile 文件不存在。"
  exit 1
fi

# 检查 docker-compose-server.yml 是否存在
if [ ! -f "$DOCKER_COMPOSE_FILE" ]; then
  echo "docker-compose-server.yml 文件不存在。"
  exit 1
fi


docker tag yunkeji-api-$PORT:latest yunkeji-api-$PORT:$TIMESTAMP

# 替换 Dockerfile 中的 {port} 并输出到新的文件 Dockerfile-{port}
NEW_DOCKERFILE="Dockerfile-$PORT"
sed "s/{port}/$PORT/g" $DOCKERFILE > $NEW_DOCKERFILE
echo "已生成 $NEW_DOCKERFILE 文件。"

# 替换 docker-compose-server.yml 中的 {port} 并输出到新的文件 docker-compose-server-{port}.yml
NEW_DOCKER_COMPOSE_FILE="docker-compose-server-$PORT.yml"
sed "s/{port}/$PORT/g" $DOCKER_COMPOSE_FILE > $NEW_DOCKER_COMPOSE_FILE
echo "已生成 $NEW_DOCKER_COMPOSE_FILE 文件。"

# 执行 Docker 构建命令，使用新的 Dockerfile 文件
echo "正在使用 $NEW_DOCKERFILE 构建 Docker 镜像..."
docker build --no-cache -f $NEW_DOCKERFILE -t yunkeji-api-$PORT:latest .

if [ $? -ne 0 ]; then
  echo "Docker 镜像构建失败。"
  # 删除生成的文件
  rm -f $NEW_DOCKERFILE $NEW_DOCKER_COMPOSE_FILE
  exit 1
fi

# 使用新的 docker-compose-server-{port}.yml 文件运行 docker-compose
echo "正在使用 $NEW_DOCKER_COMPOSE_FILE 启动服务..."
docker-compose -f $NEW_DOCKER_COMPOSE_FILE up -d

if [ $? -ne 0 ]; then
  echo "docker-compose 启动失败。"
  # 删除生成的文件
  rm -f $NEW_DOCKERFILE $NEW_DOCKER_COMPOSE_FILE
  exit 1
fi

# 删除生成的文件
#echo "清理临时文件..."
#rm -f $NEW_DOCKERFILE $NEW_DOCKER_COMPOSE_FILE
echo "操作完成。"
